package com.tyae.dao;

import java.util.List;

import com.tyae.bean.Advogado;

public class AdvogadoDAOHibernate implements AdvogadoDAO {

	HibernateDAOFactory hibernateDAOFactory = null;
	HibernateDAO<Advogado> hibernateDAO = null;

	public AdvogadoDAOHibernate() {
		hibernateDAOFactory = new HibernateDAOFactory();
		hibernateDAO = hibernateDAOFactory.getAdvogadoDAO();
	}
	
	@Override
	public boolean inserir(Advogado advogado) throws Exception {
		boolean ok = false;

		try {
			hibernateDAO.add(advogado);
			ok = true;
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		} 
		return ok;
	}

	@Override
	public boolean alterar(Advogado advogado) throws Exception {
		boolean ok = false;

		try {
			hibernateDAO.update(advogado);
			ok = true;
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		}

		return ok;
	}

	@Override
	public boolean excluir(Advogado advogado) throws Exception {
		boolean ok = false;

		try {
			hibernateDAO.remove(advogado);
			ok = true;
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		} 

		return ok;
	}
	
	@SuppressWarnings("unchecked")
	@Override
	public List<Advogado> getSelecionar(String nome) {
		String 	sql = "FROM Advogado as advogado WHERE advogado.codigoAdvogado <> 0";

		if (!(nome.isEmpty())) {
			sql += " AND advogado.pessoa.nome like '" + nome + "%' ";  
		}
		
		sql += " ORDER BY advogado.pessoa.nome";		
 
		List<Advogado> lista = hibernateDAO.getSession().createQuery(sql).list();
		
		return lista;
	}	

	@Override
	public Advogado getAdvogado(int codigoAdvogado) {
		return hibernateDAO.get(codigoAdvogado);
	}

	@Override
	public List<Advogado> getListarTodos() {
		return hibernateDAO.listAll();
	}
	
	@Override
	public boolean isExiste(Advogado advogado) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean isExclusaoLiberada(Advogado advogado) {
		// TODO Auto-generated method stub
		return false;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Advogado> getSelecionar(String descricao, int empresa) {
		String 	sql = "FROM Advogado as advogado WHERE advogado.codigoAdvogado <> 0";

		if (!(descricao.isEmpty())) {
			sql += " AND advogado.pessoa.nome like '" + descricao + "%' ";  
		}
		
		sql += " AND advogado.empresa = " +empresa; 
		sql += " ORDER BY advogado.pessoa.nome";		
 
		List<Advogado> lista = hibernateDAO.getSession().createQuery(sql).list();
		
		return lista;	}	

}
